package com.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.project.bean.GradeBean;
import com.project.bean.RoleBean;

import java.util.List;

/**
 * 角色接口类
 */
public interface IRoleService {
    /**
     * 查询所有的角色
     * @return 角色集合
     */
    public List<RoleBean> findAllRole();

    /**
     * 通过角色id数组查询角色权限集合，去除重复权限
     * @param roleId 角色id数组
     * @return 权限集合
     */
    public List<GradeBean> findGradeByRoleId(Integer[] roleId);

    /**
     * 分页查询角色集合
     * @param pageNO 页码
     * @return 分页对象
     */
    public IPage<RoleBean> cutByItem(Integer pageNO);

    /**
     * 通过角色id删除角色
     * 1、通过角色id删除用户角色中间表
     *2、通过角色id删除权限角色中间表
     * 3、通过角色id删除角色
     * @param roleId 角色ID
     */
    public void delRoleById(Integer roleId);

    /**
     * 按角色ID，查询角色信息，同时查询角色拥有的权限集合
     * @param roleId 角色ID
     * @return 角色对象
     */
    public RoleBean findById(Integer roleId);

    /**
     * 按角色名称，查询角色信息
     * @param roleName 角色名称
     * @return 角色对象
     */
    public RoleBean findByName(String roleName);

    /**
     * 添加角色
     * 添加角色，同时添加角色拥有的权限集合
     * @param role 角色对象
     * @param gradeId 权限id数组
     */
    public void addRole(RoleBean role,Integer[] gradeId);

    /**
     * 通过角色id修改用户的权限
     * 先通过角色id删除中间表相关信息，再添加新的权限信息
     * @param roleId 角色ID
     * @param newGradeId 用户新权限id数组
     */
    public void updateGradeByRoleId(Integer roleId,Integer[] newGradeId);
}
